public class A52 {
    public static void main(String[] args) {
        final int a = 10;// final修饰的变量，一旦被赋值，就不能被改变
        //a = 20; //这里会报错
        //final 修改基本数据类型:记录的值不能发生改变
        //final 修饰引用数据类型:记录的地址值不能发生改变,内部的属性值可以发生改变
        //例1
        final int[] numbers = new int[5];
        numbers[0] = 100;
        //numbers = new int[3]; //这里会报错
        //例2
        final Person p = new Person("张三",18);
        //p = new Person("李四",20); //这里会报错
        p.setAge(20); //这里不会报错,因为setAge方法不是final方法
        //例3:
        final String str = "hello";
        //str = "world"; //这里会报错
    }
}
class Person{
    private String name;
    private int age;
    public Person(){}
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
class Fu1{
    public final void show1(){
        System.out.println("这是父类的show1方法");
    }
}
class Zi extends Fu1{
    /*@Override
    public void show1(){   //这里会报错
        System.out.println("这是子类的show方法");
    }*/
    //因为父类中的show方法被final修饰，子类无法继承父类中的方法，所以子类无法覆盖父类中的方法
}
final class Fu2{
    public void show2(){
        System.out.println("这是父类的show2方法");
    }
}
/* class Zi2 extends Fu2{}    //会报错
 因为Fu2类被final修饰，子类无法继承父类，所以子类无法继承父类中的方法，所以子类无法继承父类中的方法
*/

